O7778(CAP 0-90 DEG FULL RAD. ID PART)
(ABSOLUTE SURFACING MACRO)
(START OF TANGENT/ TOP OF PART)
(END OF TANGENT/ ID OF PART)
(UNPROVEN)

(FORMAT G65/G66 CDTSKRZF)
(C = #3 - CUSP HEIGHT/ DEG. OF ROTATION) 
(D = #7 - TOOL DIAMETER)
(T = #20 - TOOL RADIUS/ BALL OR BULL)
(S = #19 - PART INTERNAL DIAMETER)
(K = #6 - PART ID RADIUS/ TOP)
(R = #18 - R PLANE) 
(Z = #26 - Z START ZERO)
(F = #9 FEEDRATE)
(******************************) 

IF[[#3*#7*#19*#6*#9]EQ0]GOTO1000
IF[[#7+.1]GT#19]GOTO990
(CALCULATE ANGULAR STEPOVER)
#100=0
#101=#6+#20
#102=#3
IF[#102GT15.]THEN#102=15.
#102=ROUND[90./#102]
#102=90./#102
#103=#5002
(CALCULATE START Y POSITION)
#104=[#103+#6+[#19/2.]]-[[#7/2.]+#20]
(CALCULATE Y SWING)
#114=[#6+[#19/2.]]-[[#7/2.]+#20]
#105=#5001
N1G0G90X#105Y[#104-.1]
Z[#26+.1]
G1Z#26F#9
#106=#5003-#101
WHILE[#100LE90.]DO1
IF[#100GT90.]GOTO100
#107=SIN[#100]*[#101]
#108=COS[#100]*[#101]
#104=#104-#107
#114=#114-#107
G90G1G41Y#104
Z[#106+#108]
G03J-[#114]
G1G40Y[#104-.1]
#100=#100+#102
END1
N100G0G90Z#18
X#105Y#103
M99

N990#3000=1(TOOL TOO BIG)
N1000#3000=1(DATA LACKING!)